package com.synjones.zeuscloudweb.service;

import com.synjones.zeus.model.web.AdminRoleBean;
import com.synjones.zeus.model.web.RoleBean;
import com.synjones.zeus.model.web.RoleMenuBean;
import com.synjones.zeuscloudweb.util.ccl.datastructure.impl.BaseDto;

import java.util.List;

/** 角色获取数据接口
 * @author  yys
 * Description: 角色获取数据接口
 * @date  created in 10:39 2018-01-15
 * Modified by:
 */

public interface RoleService {
 /**
   *  获取菜单树
   *  @param 
   *  @author yys
   *  Description:  获取菜单树
   *  @date  10:44 2018-01-15
   *  @return  BaseDto
   *  throws
   */
    BaseDto selectTreeMenu();
 /**
   *  添加角色以及角色拥有菜单
   *  @param roleName 角色名称
   *  @param  menuId 菜单集合
   *  @param  remarks 备注
   *  @author yys
   *  Description:  添加角色以及角色拥有权限
   *  @date  12:05 2018-01-15
   *  @return
   *  throws
   */
    BaseDto insertRoleMenu(String roleName, String menuId,String remarks);
 /**
   *  根据角色名查询角色是否已经存在
   *  @param roleName 角色名
   *  @author yys
   *  Description:  根据角色名查询角色是否已经存在
   *  @date  12:12 2018-01-15
   *  @return
   *  throws
   */
    int selectCountRoleByRoleName(String roleName);
 /**
   *  分页获取角色列表
   *  @param orderColumn 排序字段
   *  @param orderDir 排序方式
   *  @param roleBean 条件查询
   *  @author yys
   *  Description:  分页获取角色列表
   *  @date  10:15 2018-01-16
   *  @return
   *  throws
   */
    List<RoleBean> selectRoleByPage(String orderColumn, String orderDir, RoleBean roleBean);
 /**
   *  批量删除角色信息
   *  @param roleId 角色ID集合
   *  @author yys
   *  Description:  批量删除角色信息
   *  @date  14:22 2018-01-16
   *  @return
   *  throws
   */
    BaseDto deleteRoleByRoleId(String roleId);
 /**
   *  获取全部角色信息
   *  @param 
   *  @author yys
   *  Description:  获取全部角色信息
   *  @date  15:16 2018-01-16
   *  @return
   *  throws
   */
    List<RoleBean> selectRole();
 /**
   *  根据管理员userId获取管理员角色关联信息
   *  @param userId 管理员ID
   *  @author yys
   *  Description:  根据管理员userId获取管理员角色关联信息
   *  @date  16:56 2018-01-16
   *  @return
   *  throws
   */
    AdminRoleBean selectAdminRoleByUserId(String userId);
 /**
   *  根据角色ID获取角色详情
   *  @param roleId 角色Id
   *  @author yys
   *  Description:  根据角色ID获取角色详情
   *  @date  11:04 2018-01-17
   *  @return
   *  throws
   */
    RoleBean selectRoleByRoleId(String roleId);
 /**
   *  根据角色Id查询角色菜单关联表 此角色以拥有的菜单集合
   *  @param roleId 角色Id
   *  @author yys
   *  Description:  根据角色Id查询角色菜单关联表 此角色以拥有的菜单集合
   *  @date  11:29 2018-01-17
   *  @return
   *  throws
   */
    List<RoleMenuBean> selectRoleMenuByRoleId(String roleId);
 /**
   *  根据角色Id查询角色菜单关联表 此角色以拥有的菜单集合
   *  @param roleId 角色Id
   *  @author yys
   *  Description:  根据角色Id查询角色菜单关联表 此角色以拥有的菜单集合
   *  @date  12:05 2018-01-17
   *  @return
   *  throws
   */
    BaseDto selectTreeMenuForUpdate(String roleId);
 /**
   *  修改角色和角色拥有的权限菜单
   *  @param roleBean 角色实体
   *  @param menuId 菜单Id集合
   *  @author yys
   *  Description:  修改角色和角色拥有的权限菜单
   *  @date  14:09 2018-01-17
   *  @return  BaseDto
   *  throws
   */
    BaseDto updateRoleAndRoleMenu(RoleBean roleBean, String menuId);

    /**
     * 修改状态
     * @param roleBean
     * @return
     */
    int updateRoleAvailable(RoleBean roleBean);
}
